﻿using System;

namespace Kwik.Orm
{
	/// <summary>
	/// Schema column signature
	/// </summary>
	public interface ISchemaColumn
	{
		/// <summary>
		/// Column name
		/// </summary>
		string Name { get; set; }
		/// <summary>
		/// Column description
		/// </summary>
		string Description { get; set; }
		/// <summary>
		/// Column ordinal position
		/// </summary>
		int Ordinal { get; set; }
		/// <summary>
		/// Column data size
		/// </summary>
		int Size { get; set; }
		/// <summary>
		/// Column numeric scale
		/// </summary>
		int Scale { get; set; }
		/// <summary>
		/// Column numeric precision
		/// </summary>
		int Precision { get; set; }
		/// <summary>
		/// Column data type
		/// </summary>
		string Type { get; set; }
		/// <summary>
		/// Indication whether this column is a key
		/// </summary>
		bool IsKey { get; set; }
		/// <summary>
		/// Indication whether this column can be null
		/// </summary>
		bool IsNullable { get; set; }
		/// <summary>
		/// Indication whether this column is contains an auto generated value
		/// </summary>
		bool IsAutoIncrement { get; set; }
		/// <summary>
		/// Indication whether this column value is unique
		/// </summary>
		bool IsUnique { get; set; }
		/// <summary>
		/// Default value for this column
		/// </summary>
		string DefaultValue { get; set; }
	}
}
